local vocherId=ARGV[1]
local userId=ARGV[2]
local orderId=ARGV[3]
local stockKey= 'seckill:stock:'..vocherId
local orderKey= 'seckill:order:'..vocherId
-- 判断库存是否充足
if (tonumber(redis.call('get',stockKey))<=0) then
    --库存不足
    return 1
end
-- 判断用户是否下单
if (redis.call('sismember',orderKey,userId)==1) then
    --存在说明是重复下单
    return 2
end
-- 扣减库存
redis.call('incrby',stockKey,-1)
-- 下单
redis.call('sadd',orderKey,userId)
-- 发送消息到队列
redis.call('xadd','stream.orders','*','voucherId',vocherId,'userId',userId,'id',orderId)
return 0